home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #15
/
Monster Media Number 15 (Monster Media)(July 1996).ISO
/
prog_c
/
cuj0696.zip
/
DWYER.ZIP
/
LIB
/
CHDTR.C
< prev
next >
Wrap
C/C++ Source or Header
|
1995-10-03
|
4KB
|
219 lines
/* ======= */
/* chdtr.c */
/* ======= */
/*
Cephes Math Library Release 2.0: April, 1987
Copyright 1984, 1987 by Stephen L. Moshier
Direct inquiries to 30 Frost Street, Cambridge, MA 02140
*/
/* ==================================================================== *
* chdtrc() *
* *
* Complemented Chi-square distribution (Right Tail Area, x,inf]) *
* *
* chdtr() *
* *
* Chi-square distribution (Left Tail Area, [0,x]) *
* *
* chdtri() *
* *
* Inverse of complemented Chi-square distribution *
* *
* Given Degrees of Freedom and Percentage, *
* This Function Yields Chi-Square Value *
* ==================================================================== */
/* ==================================================================== */
/* chdtrc()
*
* Complemented Chi-square distribution
*
*
*
* SYNOPSIS:
*
* double v, x, y, chdtrc();
*
* y = chdtrc( v, x );
*
*
*
* DESCRIPTION:
*
* Returns the area under the right hand tail (from x to
* infinity) of the Chi square probability density function
* with v degrees of freedom:
*
*
* inf.
* -
* 1 | | v/2-1 -t/2
* P( x | v ) = ----------- | t e dt
* v/2 - | |
* 2 | (v/2) -
* x
*
* where x is the Chi-square variable.
*
* The incomplete gamma integral is used, according to the
* formula
*
* y = chdtr( v, x ) = igamc( v/2.0, x/2.0 ).
*
*
* The arguments must both be positive.
*
*
*
* ACCURACY:
*
* See igamc().
*
* ERROR MESSAGES:
*
* message condition value returned
* chdtrc domain x < 0 or v < 1 0.0
*/
/* ==================================================================== */
#include "mconf.h"
double chdtrc(df,x)
double df, x;
{
double igamc();
if( (x < 0.0) || (df < 1.0) )
{
mtherr( "chdtrc", DOMAIN );
return(0.0);
}
return( igamc( df/2.0, x/2.0 ) );
}
/* ==================================================================== */
/* chdtr()
*
* Chi-square distribution
*
*
*
* SYNOPSIS:
*
* double df, x, y, chdtr();
*
* y = chdtr( df, x );
*
*
*
* DESCRIPTION:
*
* Returns the area under the left hand tail (from 0 to x)
* of the Chi square probability density function with
* v degrees of freedom.
*
*
* inf.
* -
* 1 | | v/2-1 -t/2
* P( x | v ) = ----------- | t e dt
* v/2 - | |
* 2 | (v/2) -
* x
*
* where x is the Chi-square variable.
*
* The incomplete gamma integral is used, according to the
* formula
*
* y = chdtr( v, x ) = igam( v/2.0, x/2.0 ).
*
*
* The arguments must both be positive.
*
*
*
* ACCURACY:
*
* See igam().
*
* ERROR MESSAGES:
*
* message condition value returned
* chdtr domain x < 0 or v < 1 0.0
*/
/* ==================================================================== */
double chdtr(df,x)
double df, x;
{
double igam();
double Answer;
if( (x < 0.0) || (df < 1.0) )
{
mtherr( "chdtr", DOMAIN );
return(0.0);
}
Answer = igam( df/2.0, x/2.0 );
return( Answer );
}
/* ==================================================================== */
/* chdtri()
*
* Inverse of complemented Chi-square distribution
*
*
*
* SYNOPSIS:
*
* double df, x, y, chdtri();
*
* x = chdtri( df, y );
*
*
*
*
* DESCRIPTION:
*
* Finds the Chi-square argument x such that the integral
* from x to infinity of the Chi-square density is equal
* to the given cumulative probability y.
*
* This is accomplished using the inverse gamma integral
* function and the relation
*
* x/2 = igami( df/2, y );
*
*
*
*
* ACCURACY:
*
* See igami.c.
*
* ERROR MESSAGES:
*
* message condition value returned
* chdtri domain y < 0 or y > 1 0.0
* v < 1
*
*/
/* ==================================================================== */
double chdtri( df, y )
double df, y;
{
double x;
double igami();
if( (y < 0.0) || (y > 1.0) || (df < 1.0) )
{
mtherr( "chdtri", DOMAIN );
return(0.0);
}
x = igami( 0.5 * df, y );
return( 2.0 * x );
}